今天的內容很短,因為實作還蠻容易的。
瀏覽網頁時,有些時候是在看影片。這時,如果沒有特別設定要系統保持清醒的話,常常會看到一半就因為系統睡眠時間到了,就把畫面關掉。如果常常會利用 browser 來看影片的話,最好有個開關讓系統在使用 browser app 時能夠不要受到系統的睡眠時間設定影響。
在 browser 中的設定畫面已經利用 Android 的 Preference UI 設計得很完善了,所以我只要在特定的 preference xml 中加入新的 checkbox preference,然後再在程式中偵測當這個設定改變時,把 keep awake 的狀態打開來就行了。
<CheckBoxPreference
android:defaultValue="false"
android:icon="@drawable/ic_eye"
android:key="sp_screen_awake"
android:title="@string/setting_title_screen_awake"
android:summary="@string/setting_summary_screen_awake" />
var keepAwake: Boolean
get() = sp.getBoolean(K_KEEP_AWAKE, false)
set(value) {sp.edit { putBoolean(K_KEEP_AWAKE, value) } }
override fun onCreate(savedInstanceState: Bundle?) {
...
if (config.keepAwake) {
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
}
private val preferenceChangeListener = SharedPreferences.OnSharedPreferenceChangeListener { _, key ->
when {
key.equals(ConfigManager.K_KEEP_AWAKE) -> {
if (config.keepAwake) {
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
} else {
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
}
...
}
}
這功能沒有什麼好示範的,就跳過示範囉。